Electric motors of various kinds are well known. Generally speaking, electric motors are driven by applying a current to inputs of the motor, which currents create a magnetic field that interacts with another magnetic field to turn the motor's rotor. For example, one or more permanent magnets can provide magnetic fields to interact with the magnetic fields produced by the input current. The motor's turning can be controlled by controlling various aspects of the current applied to the motor.
Motors come in a variety of designs. A common design includes having three windings of wires through which current flows, which current flow creates magnetic fields that interact with a plurality of permanent magnets. To control a motor with a complicated design, the current control may need a complicated and automated pattern that may be changed based on feedback regarding the motor's operation.
Many of today's motor control systems (as may be used with motors used in washing machines, electronic bicycles, manufacturing applications, and any other automated motor control) contain speed and current controllers that contain parameters that must be tuned manually to achieve the desired level of system performance. Performance is usually measured in terms of the controller's disturbance rejection properties, its robustness against parameter uncertainty, and settling times. However, tuning controllers manually can be time consuming and tedious given a large application space such as motor control because motors are applied in a wide variety of applications having different motor control needs. Moreover, tuning controller parameters for a particular application does not imply that the same parameters will give desired system performance for a different application. Changing applications often degrades robustness and disturbance rejection properties of the controller. Also, many applications require control systems expertise that is often not available to software engineers that develop microcontroller based motor control solutions.
In one approach known in the art, Field Oriented Control (FOC) is used for Permanent Magnet Synchronous Motors (PMSM). Such motors have non-linear characteristics, and one way to control such motors is to linearize the characteristics and apply linear controls. The general control flow in traditional Proportional Integral (PI)-based field oriented control is shown in FIG. 1. Usage of PIs requires manual tuning of six gains (kp and ki for each of three PIs) to achieve desired system performance. These gains are usually found by laboratory testing. Also, there is no closed form solution to specify desired controller bandwidth (the amount of computation capability for a controller when controlling a motor) while using this approach.
In other general dynamic systems or contexts, FOC is applied using simplified and/or special input-output linearization (IOL) and extended state observer (ESO) techniques. This simplified version is called Active Disturbance Rejection Control (ADRC). Application of this approach to PMSM contexts has certain limitations. For example, applications of ADRC in this context have either used first-order ADRC for speed and PIs for id and iq or first-order ADRCs for speed, id and iq. However, there is no need to cascade two control systems for speed and iq. Unnecessarily increasing the number of controllers not only increases complexity in gain design but also degrades system performance.